package com.finger.forest.utils;

import android.annotation.SuppressLint;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * ****************************************************************<br>
 * 文件名称 : StringUtil.java<br>
 * 作 者 :   buage<br>
 * 创建时间 : 2017年2月7日 下午2:27:46<br>
 * 文件描述 : <br>字符串转换工具
 * 版权声明 : Copyright (C) 2015 www.busge.com<br>
 * 修改历史 : 2017年2月7日 2.00 版本<br>
 * ****************************************************************<br>
 */
@SuppressLint("SimpleDateFormat")
public class StringUtil {
    /**
     * 分转元
     */
    public static String pennyToDollar(String penny) {
        if (isBlank(penny)) {
            return "0";
        } else {
            int dollar = StringUtil.String2int(penny) / 100;
            return String.valueOf(dollar);
        }
    }

    /**
     * 如果为空啥的，就返回0
     */
    public static String judgeIsNull(String str) {
        if (isBlank(str)) {
            return "0";
        } else {
            return str;
        }
    }

    /**
     * 如果为空啥的，就返回1,业务需求的
     */
    public static String judgeIsNullReturnOne(String str) {
        if (isBlank(str)) {
            return "1";
        } else {
            return str;
        }
    }

    /**
     * 如果为空啥的，就返回""
     */
    public static String isNull(String str) {
        if (isBlank(str)) {
            return "";
        } else {
            return str;
        }
    }

    /**
     * 保留两位小数
     */
    public static String m2(double a) {
        BigDecimal b = new BigDecimal(String.valueOf(a));
        double f1 = b.setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
        return String.valueOf(f1);
    }

    /**
     * 保留两位小数
     */
    public static String m2(String a) {
        BigDecimal b = new BigDecimal(a);
        double f1 = b.setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
        return String.valueOf(f1);
    }

    /**
     * 方法表述 判断字符串是否为空
     *
     * @param str      被判断的字符串
     * @param isToTrim 字符串是否需要前后去除空格
     * @return boolean true 字符串为空； false 字符串不为空
     */
    public static boolean isEmpty(String str, boolean isToTrim) {
        if (null == str) {
            return true;
        }
        if (isToTrim) {
            if (0 >= str.trim().length()) {
                return true;
            }
        } else {
            if (0 >= str.length()) {
                return true;
            }
        }
        return false;
    }

    /**
     * 判断字符串是否为空或者空字符串
     *
     * @return 如果字符串是空或空字符串则返回true，否则返回false
     */
    public static boolean isBlank(String str) {
        if (str == null || "".equals(str) || str.equals("null")) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 验证是否是手机号码
     */
    public static boolean isMobile(String str) {
        Pattern pattern = Pattern
                .compile
                        ("^(1)\\d{10}$");
        Matcher matcher = pattern.matcher(str);
        if (matcher.matches()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 字符串转换成double型
     *
     * @param doubleString 字符串
     */
    public static double String2Double(String doubleString) {
        try {
            if (isBlank(doubleString)) {
                return 0.0;
            } else {
                return Double.parseDouble(doubleString);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return 0.0;
        }
    }

    /**
     * 字符串转换成int型整数
     */
    public static int String2int(String intString) {
        try {
            if (isBlank(intString)) {
                return 0;
            } else {
                return Integer.parseInt(intString);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return 0;
        }
    }

    /**
     * 防止integer空指针
     */
    public static Integer isIntegerNull(Integer data) {
        if (data == null) {
            return 0;
        }
        return data;
    }

    /**
     * 防止Double空指针
     */
    public static Double isDoubleNull(Double data) {
        if (data == null) {
            return 0.0;
        }
        return data;
    }

    /**
     * 防止Long空指针
     */
    public static Long isLongNull(Long data) {
        if (data == null) {
            return 0L;
        }
        return data;
    }

    /**
     * 字符串转换成long型整数
     */
    public static long String2long(String intString) {
        try {
            if (isBlank(intString)) {
                return 0;
            } else {
                return Long.parseLong(intString);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return 0;
        }
    }

    /**
     * 手机号中间4个数字隐藏
     */
    public static String privacyPhone(String phone) {
        if (!StringUtil.isBlank(phone)) {
            String phoneNumber = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
            return phoneNumber;
        }
        return "";
    }

    /**
     * 获取手机号的尾号
     */
    public static String getTailNumber(String phone) {
        if (!StringUtil.isBlank(phone) && phone.length() > 7) {
            String phoneNumber = phone.substring(7);
            return phoneNumber;
        }
        return "";
    }

    public static String to2Price(double price) {
        DecimalFormat decimalFormat = new DecimalFormat("0.00");
        return decimalFormat.format(price);
    }
}